﻿/*
Скрипт развертывания для routelist
*/

GO
SET ANSI_NULLS, ANSI_PADDING, ANSI_WARNINGS, ARITHABORT, CONCAT_NULL_YIELDS_NULL, NUMERIC_ROUNDABORT, QUOTED_IDENTIFIER OFF;


GO
:setvar Path1 "c:\Program Files\Microsoft SQL Server\MSSQL10.$(DatabaseName)\MSSQL\DATA\"
:setvar Path2 "c:\Program Files\Microsoft SQL Server\MSSQL10.$(DatabaseName)\MSSQL\DATA\"
:setvar DatabaseName "routelist"
:setvar DefaultDataPath "c:\Program Files\Microsoft SQL Server\MSSQL10.ROUTELIST\MSSQL\DATA\"
:setvar DefaultLogPath "c:\Program Files\Microsoft SQL Server\MSSQL10.ROUTELIST\MSSQL\DATA\"

GO
:on error exit
GO
USE [master]
GO
IF (DB_ID(N'$(DatabaseName)') IS NOT NULL
    AND DATABASEPROPERTYEX(N'$(DatabaseName)','Status') <> N'ONLINE')
BEGIN
    RAISERROR(N'Для состояния конечной базы данных %s не задано значение ONLINE. Чтобы выполнить развертывание в эту базу данных, необходимо задать для нее состояние ONLINE.', 16, 127,N'$(DatabaseName)') WITH NOWAIT
    RETURN
END

GO

IF NOT EXISTS (SELECT 1 FROM [master].[dbo].[sysdatabases] WHERE [name] = N'$(DatabaseName)')
BEGIN
    RAISERROR(N'Не удается развернуть этот скрипт обновления на конечном объекте ALEX-PC\ROUTELIST. База данных routelist, для которой создан этот скрипт, не существует на данном сервере.', 16, 127) WITH NOWAIT
    RETURN
END

GO

IF CAST(DATABASEPROPERTY(N'$(DatabaseName)','IsReadOnly') as bit) = 1
BEGIN
    RAISERROR(N'Не удается развернуть этот скрипт обновления, так как для базы данных %s, для которой он создан, задано состояние READ_ONLY.', 16, 127, N'$(DatabaseName)') WITH NOWAIT
    RETURN
END

GO
USE [$(DatabaseName)]
GO
/*
 Шаблон скрипта после развертывания							
--------------------------------------------------------------------------------------
 В данном файле содержатся операторы SQL, которые будут исполнены перед скриптом построения.	
 Используйте синтаксис SQLCMD для включения файла в скрипт перед развертыванием.			
 Пример:      :r .\myfile.sql								
 Используйте синтаксис SQLCMD для создания ссылки на переменную в скрипте перед развертыванием.		
 Пример:      :setvar TableName MyTable							
               SELECT * FROM [$(TableName)]					
--------------------------------------------------------------------------------------
*/

GO

PRINT N'Выполняется создание [dbo].[Station]...';


GO
CREATE TABLE [dbo].[Station] (
    [id]   INT            IDENTITY (1, 1) NOT NULL,
    [name] NVARCHAR (MAX) NOT NULL
);


GO
PRINT N'Выполняется создание PrimaryKeyConstraintStation...';


GO
ALTER TABLE [dbo].[Station]
    ADD CONSTRAINT [PrimaryKeyConstraintStation] PRIMARY KEY CLUSTERED ([id] ASC) WITH (ALLOW_PAGE_LOCKS = ON, ALLOW_ROW_LOCKS = ON, PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF, STATISTICS_NORECOMPUTE = OFF);


GO

PRINT N'Выполняется изменение [dbo].[VokzalTable]...';


GO
SET ANSI_NULLS, QUOTED_IDENTIFIER ON;


GO
ALTER TABLE [dbo].[VokzalTable]
    ADD [id_station] INT NULL;


GO
SET ANSI_NULLS, QUOTED_IDENTIFIER OFF;


GO
PRINT N'Выполняется создание [dbo].[VokzalTable].[IndexVokzalTableDateNumdoc]...';


GO
CREATE NONCLUSTERED INDEX [IndexVokzalTableDateNumdoc]
    ON [dbo].[VokzalTable]([datedoc] ASC, [numdoc] ASC) WITH (ALLOW_PAGE_LOCKS = ON, ALLOW_ROW_LOCKS = ON, PAD_INDEX = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, IGNORE_DUP_KEY = OFF, STATISTICS_NORECOMPUTE = OFF, ONLINE = OFF, MAXDOP = 0);


GO

PRINT N'Выполняется создание [dbo].[driver].[IndexDriverPerson]...';


GO
CREATE NONCLUSTERED INDEX [IndexDriverPerson]
    ON [dbo].[driver]([id_person] ASC) WITH (ALLOW_PAGE_LOCKS = ON, ALLOW_ROW_LOCKS = ON, PAD_INDEX = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, IGNORE_DUP_KEY = OFF, STATISTICS_NORECOMPUTE = OFF, ONLINE = OFF, MAXDOP = 0);


GO
PRINT N'Выполняется создание [dbo].[RouteDepartureCharact].[IndexRouteDepartureCharactRouteTable]...';


GO
CREATE NONCLUSTERED INDEX [IndexRouteDepartureCharactRouteTable]
    ON [dbo].[RouteDepartureCharact]([id_routetable] ASC) WITH (ALLOW_PAGE_LOCKS = ON, ALLOW_ROW_LOCKS = ON, PAD_INDEX = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, IGNORE_DUP_KEY = OFF, STATISTICS_NORECOMPUTE = OFF, ONLINE = OFF, MAXDOP = 0);


GO
PRINT N'Выполняется создание [dbo].[RouteList].[IndexRouteListDateNom]...';


GO
CREATE NONCLUSTERED INDEX [IndexRouteListDateNom]
    ON [dbo].[RouteList]([dt_datedoc] ASC, [nomdog] ASC) WITH (ALLOW_PAGE_LOCKS = ON, ALLOW_ROW_LOCKS = ON, PAD_INDEX = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, IGNORE_DUP_KEY = OFF, STATISTICS_NORECOMPUTE = OFF, ONLINE = OFF, MAXDOP = 0);


GO
PRINT N'Выполняется создание [dbo].[RouteList].[IndexRouteListRouteTable]...';


GO
CREATE NONCLUSTERED INDEX [IndexRouteListRouteTable]
    ON [dbo].[RouteList]([id_RouteTable] ASC) WITH (ALLOW_PAGE_LOCKS = ON, ALLOW_ROW_LOCKS = ON, PAD_INDEX = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, IGNORE_DUP_KEY = OFF, STATISTICS_NORECOMPUTE = OFF, ONLINE = OFF, MAXDOP = 0);


GO
PRINT N'Выполняется создание [dbo].[RouteListInfo].[IndexRouteListInfoRouteList]...';


GO
CREATE NONCLUSTERED INDEX [IndexRouteListInfoRouteList]
    ON [dbo].[RouteListInfo]([id_rl] ASC) WITH (ALLOW_PAGE_LOCKS = ON, ALLOW_ROW_LOCKS = ON, PAD_INDEX = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, IGNORE_DUP_KEY = OFF, STATISTICS_NORECOMPUTE = OFF, ONLINE = OFF, MAXDOP = 0);


GO
PRINT N'Выполняется создание ForeignKeyConstrainVokzalTableStation...';


GO
ALTER TABLE [dbo].[VokzalTable] WITH NOCHECK
    ADD CONSTRAINT [ForeignKeyConstrainVokzalTableStation] FOREIGN KEY ([id_station]) REFERENCES [dbo].[Station] ([id]) ON DELETE NO ACTION ON UPDATE NO ACTION;


GO
/*
Шаблон скрипта после развертывания							
--------------------------------------------------------------------------------------
 В данном файле содержатся операторы SQL, которые будут добавлены в скрипт построения.		
 Используйте синтаксис SQLCMD для включения файла в скрипт после развертывания.			
 Пример:      :r .\myfile.sql								
 Используйте синтаксис SQLCMD для создания ссылки на переменную в скрипте после развертывания.		
 Пример:      :setvar TableName MyTable							
               SELECT * FROM [$(TableName)]					
--------------------------------------------------------------------------------------
*/

GO
PRINT N'Существующие данные проверяются относительно вновь созданных ограничений';


GO
USE [$(DatabaseName)];


GO
ALTER TABLE [dbo].[VokzalTable] WITH CHECK CHECK CONSTRAINT [ForeignKeyConstrainVokzalTableStation];


GO
